<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">

<html>
  <head>
    <meta name="generator" content=
    "HTML Tidy for Linux/x86 (vers 1st March 2002), see www.w3.org">

    <title>Class Code Table</title>
  </head>

  <body>
    <center>
      <h1>Class Code Table</h1>
    </center>
    <hr>

    <h2>Class Codes</h2>

    <table border="1">
      <tr>
        <th>Class</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>Devices built before class codes (i.e. pre PCI 2.0)</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>Mass storage controller</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>Network controller</td>
      </tr>

      <tr>
        <td>0x03</td>

        <td>Display controller</td>
      </tr>

      <tr>
        <td>0x04</td>

        <td>Multimedia device</td>
      </tr>

      <tr>
        <td>0x05</td>

        <td>Memory Controller</td>
      </tr>

      <tr>
        <td>0x06</td>

        <td>Bridge Device</td>
      </tr>

      <tr>
        <td>0x07</td>

        <td>Simple communications controllers</td>
      </tr>

      <tr>
        <td>0x08</td>

        <td>Base system peripherals</td>
      </tr>

      <tr>
        <td>0x09</td>

        <td>Inupt devices</td>
      </tr>

      <tr>
        <td>0x0A</td>

        <td>Docking Stations</td>
      </tr>

      <tr>
        <td>0x0B</td>

        <td>Processorts</td>
      </tr>

      <tr>
        <td>0x0C</td>

        <td>Serial bus controllers</td>
      </tr>

      <tr>
        <td>0x0D-0xFE</td>

        <td>Reserved</td>
      </tr>

      <tr>
        <td>0xFF</td>

        <td>Misc</td>
      </tr>
    </table>

    <h2>Class Code 0: Pre 2.0</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>All devices other than VGA</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x01</td>

        <td>VGA device</td>
      </tr>
    </table>

    <h2>Class Code 1: Mass Storage Controllers</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>SCSI Controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0xXX</td>

        <td>
          IDE controller. The <b>Prog I/F</b> is defined as follows:<br>
           

          <table>
            <tr>
              <th>bits</th>

              <th>Desc</th>
            </tr>

            <tr>
              <td>0</td>

              <td>Operating mode (primary)</td>
            </tr>

            <tr>
              <td>1</td>

              <td>Programmable indicator (primary)</td>
            </tr>

            <tr>
              <td>2</td>

              <td>Operating mode (secondary)</td>
            </tr>

            <tr>
              <td>3</td>

              <td>Programmable indicator (secondary)</td>
            </tr>

            <tr>
              <td>6..4</td>

              <td>Reserved (zero)</td>
            </tr>

            <tr>
              <td>7</td>

              <td>Master IDE device</td>
            </tr>
          </table>
        </td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>0x00</td>

        <td>Floppy disk controller</td>
      </tr>

      <tr>
        <td>0x03</td>

        <td>0x00</td>

        <td>IPI controller</td>
      </tr>

      <tr>
        <td>0x04</td>

        <td>0x00</td>

        <td>RAID controller</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other mass storage controller</td>
      </tr>
    </table>

    <h2>Class Code 2: Network Controllers</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>Ethernet controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>Token ring</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>0x00</td>

        <td>FDDI controller</td>
      </tr>

      <tr>
        <td>0x03</td>

        <td>0x00</td>

        <td>ATM controller</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other network conteroller</td>
      </tr>
    </table>

    <h2>Class Code 3: Display Controllers</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td rowspan="2">0x00</td>

        <td>0x00</td>

        <td>VGA compatable controller. Has mapping for 0xA0000..0xBFFFF and
        io addresses 0x3B0..0x3BB.</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>8514 compatable</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>XGA controller</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x80</td>

        <td>Other display controller</td>
      </tr>
    </table>

    <h2>Class Code 4: Multimedia Devices</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>Video device</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>Audio device</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other multimedia device</td>
      </tr>
    </table>

    <h2>Class Code 5: Memory Controllers</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>RAM controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>Flash memory controller</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other memory controller</td>
      </tr>
    </table>

    <h2>Class Code 6: Bridge Devices</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>Host/PCI bridge</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>PCI/ISA bridge</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>0x00</td>

        <td>PCI/EISA bridge</td>
      </tr>

      <tr>
        <td>0x03</td>

        <td>0x00</td>

        <td>PCI/Micro Channel bridge</td>
      </tr>

      <tr>
        <td>0x04</td>

        <td>0x00</td>

        <td>PCI/PCI bridge</td>
      </tr>

      <tr>
        <td>0x05</td>

        <td>0x00</td>

        <td>PCI/PCMCIA bridge</td>
      </tr>

      <tr>
        <td>0x06</td>

        <td>0x00</td>

        <td>PCI/NuBus bridge</td>
      </tr>

      <tr>
        <td>0x07</td>

        <td>0x00</td>

        <td>PCI/CardBus bridge</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other bridge type</td>
      </tr>
    </table>

    <h2>Class Code 7: Simple Communications Controllers</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td rowspan="3">0x00</td>

        <td>0x00</td>

        <td>Generic XT compatable serial controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>16450 compatable serial controller</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>16550 compatable serial controller</td>
      </tr>

      <tr>
        <td rowspan="3">0x01</td>

        <td>0x00</td>

        <td>Parallel port</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>Bi-directional parallel port</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>ECP 1.X parallel port</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other commonications device</td>
      </tr>
    </table>

    <h2>Class Code 8: Base System Peripherals</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td rowspan="3">0x00</td>

        <td>0x00</td>

        <td>Generic 8259 programmable interrupt controller (PIC)</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>ISA PIC</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>EISA PIC</td>
      </tr>

      <tr>
        <td rowspan="3">0x01</td>

        <td>0x00</td>

        <td>Generic 8237 DMA controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>ISA DMA controller</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>EISA DMA controller</td>
      </tr>

      <tr>
        <td rowspan="3">0x02</td>

        <td>0x00</td>

        <td>Generic 8254 timer</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>ISA system timer</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>EISA system timer</td>
      </tr>

      <tr>
        <td rowspan="2">0x03</td>

        <td>0x00</td>

        <td>Generic RTC controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>ISA RTC controller</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other system peripheral</td>
      </tr>
    </table>

    <h2>Class Code 9: Input Devices</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>Keyboard controller</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>Digitizer (pen)</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>0x00</td>

        <td>Mouse controller</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other input controller</td>
      </tr>
    </table>

    <h2>Class Code A: Docking Stations</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>Generic docking station</td>
      </tr>

      <tr>
        <td>0x80</td>

        <td>0x00</td>

        <td>Other type of docking station</td>
      </tr>
    </table>

    <h2>Class Code B: Processors</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>386</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>486</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>0x00</td>

        <td>Pentium</td>
      </tr>

      <tr>
        <td>0x10</td>

        <td>0x00</td>

        <td>Alpha</td>
      </tr>

      <tr>
        <td>0x20</td>

        <td>0x00</td>

        <td>PowerPC</td>
      </tr>

      <tr>
        <td>0x40</td>

        <td>0x00</td>

        <td>Co-Processor</td>
      </tr>
    </table>

    <h2>Class Code C: Serial Bus Controllers</h2>

    <table border="1">
      <tr>
        <th>Sub-Class</th>

        <th>Prog. I/F</th>

        <th>Description</th>
      </tr>

      <tr>
        <td>0x00</td>

        <td>0x00</td>

        <td>Firewire (IEEE 1394)</td>
      </tr>

      <tr>
        <td>0x01</td>

        <td>0x00</td>

        <td>ACCESS bus</td>
      </tr>

      <tr>
        <td>0x02</td>

        <td>0x00</td>

        <td>SSA (Serial Storage Architecture)</td>
      </tr>

      <tr>
        <td>0x03</td>

        <td>0x00</td>

        <td>USB (Universal Serial Bus)</td>
      </tr>
    </table>
    <hr>
    <!--#include virtual="/include/footer.html" -->
  </body>
</html>

